package com.glodon.paas.document.biz;

import java.util.List;

import com.glodon.paas.document.dao.domain.FileInfoEntity;
import com.glodon.paas.document.dao.domain.MultiPartUploadHandleEntity;
import com.glodon.paas.document.dao.domain.PartEntity;
import com.glodon.paas.document.dao.domain.RevisionEntity;
import com.glodon.paas.storage.BulkStorage;

public interface RevisionBiz {

    // for file
    void refreshFile(FileInfoEntity file);

    // for revision
    void insertRevision(RevisionEntity revision);

    void updateRevision(RevisionEntity revision);

    void updateDataBagId(RevisionEntity revision, String dataBagId);

    // delete content
    void deleteRevision(RevisionEntity revision);

    void activeRevision(RevisionEntity revision);

    RevisionEntity getUploadingRevision(String fileId);

    // RevisionEntity getLatestAvailableRevision(String fileId);

    RevisionEntity getRevision(String fileId, int revisionNum);

    RevisionEntity getRevision(String revisionId);

    RevisionEntity getRevisionByDatabag(String databagId);

    List<RevisionEntity> getAllRevisions(String fileId);

    List<RevisionEntity> getRevisions(String fileId);

    // for part
    void insertPart(PartEntity part);

    void delParts(String revisionId);

    PartEntity getLatestPartByRevision(String revisionId);

    List<PartEntity> getPartsByRevision(String revisionId);

    int getPartsCountByRevision(String revisionId);

    // for handler

    void insertHandler(MultiPartUploadHandleEntity handler);

    void delHandler(String revisionId);

    MultiPartUploadHandleEntity getHandlerByRevision(String revisionId);

    // for UT
    public void setBulkStorage(BulkStorage bulkStorage);

    public BulkStorage getBulkStorage();

}
